﻿using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Step4.Unit9.Filters
{
    public class CustomerActionFilterAttribute : Attribute, IActionFilter
    {
         

        // 控制器Action执行前
        public void OnActionExecuting(ActionExecutingContext context)
        {
            var controller = context.HttpContext.Request.RouteValues["controller"]!.ToString()!.ToLower();
            var action = context.HttpContext.Request.RouteValues["action"]!.ToString()!.ToLower();

            var userAgent = context.HttpContext.Request.Headers["user-agent"].ToString().ToLower();
            // 如果用户代理是 "iphone" 或 "android" 等手机代理
            if (userAgent.Contains("iphone") || userAgent.Contains("android"))
            {
                // 如果是访问mobile域
                if (context.HttpContext.Request.Path.ToString().ToLower().Contains($"/mobile/{controller}/{action}"))
                {
                    return;
                }
                // 不是访问mobile域，重定向到mobile域下对应控制器
                context.Result = new RedirectResult($"/mobile/{controller}/{action}");
            }
            else // 那剩下的就是PC端浏览器
            {
                // 如果是访问pc域
                if (context.HttpContext.Request.Path.ToString().ToLower().Contains($"/pc/{controller}/{action}"))
                {
                    return;
                }
                // 不是当前pc域，那就是mobile域
                context.Result = new RedirectResult($"/pc/{controller}/{action}");
            }
        }

        // 控制器Action执行后
        public void OnActionExecuted(ActionExecutedContext context)
        {
            return;
        }
    }
}
